package collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * List接口:
 * 1.List接口继承自Collection接口，为有序、可重复、有下标的集合
 * 2.有两个常见的实现类:
 *   1)ArrayList:内部使用数组实现，查询性能更好(直接下标找到物理地址)，增删性能不好
 *   2)LinkedList:内部使用链表实现，只记首尾，所以首尾元素查询和增删性能好，中间元素查询和增删性能不好
 * 3.List集常用功能: get()获取元素、set()设置元素
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("java");
        list.add("python");
        list.add("c++");
        // 从collection 当中继承下来的方法
        System.out.println(list);
        System.out.println(list.size());
        System.out.println(list.contains("java"));
        System.out.println(list.isEmpty());
       // list.clear();
        // 迭代器循环
        Iterator it=list.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
        // 新循环
        for (String str :list){
            System.out.println(str);
        }
        // get set 是list中特有方法。通过下标获取 和 替换值
        // 拿指定位置元素
        String s1=list.get(1);
        System.out.println(s1);
        // 指定位置替换元素
        list.set(2,"UI");
        System.out.println(list);
        // 指定位置插入一个元素
        list.add(1,"GO");
        System.out.println(list);
        System.out.println("-------------");
        list.add("java");
        list.add("python");
        // 第三种遍历方式  ？
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }


    }
}
